1 <?php
2
3 // Data functions (insert, update, delete, form)
for table departments
4
5 // This script and data application were generated
by AppGini 5.72
6 // Download AppGini
for free from https://bigprof.com/appgini/download/
7
8 function departments_insert(){
9     
global $Translation;
10
11     
// mm: can member insert record?
12     $arrPerm=getTablePermissions(
'departments');
13     
if(!$arrPerm[1]){
14         
return false;
15     }
16
17     $data[
'name'] = makeSafe($_REQUEST['name']);
18         
if($data['name'] == empty_lookup_value){ $data['name'] = ''; }
19     $data[
'school'] = makeSafe($_REQUEST['school']);
20         
if($data['school'] == empty_lookup_value){ $data['school'] = ''; }
21     
if($data['name']== ''){
22         echo StyleSheet() .
"\n\n<div class=\"alert alert-danger\">" . $Translation['error:'] . " 'Name': " . $Translation['field not null'] . '<br><br>';
23         echo
'<a href="" onclick="history.go(-1); return false;">'.$Translation['< back'].'</a></div>';
24         exit;
25     }
26     
if($data['school']== ''){
27         echo StyleSheet() .
"\n\n<div class=\"alert alert-danger\">" . $Translation['error:'] . " 'School': " . $Translation['field not null'] . '<br><br>';
28         echo
'<a href="" onclick="history.go(-1); return false;">'.$Translation['< back'].'</a></div>';
29         exit;
30     }
31
32     
// hook: departments_before_insert
33     
if(function_exists('departments_before_insert')){
34         $args=array();
35         
if(!departments_before_insert($data, getMemberInfo(), $args)){ return false; }
36     }
37
38     $o = array(
'silentErrors' => true);
39     sql(
'insert into `departments` set `name`=' . (($data['name'] !== '' && $data['name'] !== NULL) ? "'{$data['name']}'" : 'NULL') . ', `school`=' . (($data['school'] !== '' && $data['school'] !== NULL) ? "'{$data['school']}'" : 'NULL'), $o);
40     
if($o['error']!=''){
41         echo $o[
'error'];
42         echo
"<a href=\"departments_view.php?addNew_x=1\">{$Translation['< back']}</a>";
43         exit;
44     }
45
46     $recID = db_insert_id(db_link());
47
48     
// hook: departments_after_insert
49     
if(function_exists('departments_after_insert')){
50         $res = sql(
"select * from `departments` where `id`='" . makeSafe($recID, false) . "' limit 1", $eo);
51         
if($row = db_fetch_assoc($res)){
52             $data = array_map(
'makeSafe', $row);
53         }
54         $data[
'selectedID'] = makeSafe($recID, false);
55         $args=array();
56         
if(!departments_after_insert($data, getMemberInfo(), $args)){ return $recID; }
57     }
58
59     
// mm: save ownership data
60     set_record_owner(
'departments', $recID, getLoggedMemberID());
61
62     
return $recID;
63 }
64
65 function departments_delete($selected_id, $AllowDeleteOfParents=
false, $skipChecks=false){
66     
// insure referential integrity ...
67     
global $Translation;
68     $selected_id=makeSafe($selected_id);
69
70     
// mm: can member delete record?
71     $arrPerm=getTablePermissions(
'departments');
72     $ownerGroupID=sqlValue(
"select groupID from membership_userrecords where tableName='departments' and pkValue='$selected_id'");
73     $ownerMemberID=sqlValue(
"select lcase(memberID) from membership_userrecords where tableName='departments' and pkValue='$selected_id'");
74     
if(($arrPerm[4]==1 && $ownerMemberID==getLoggedMemberID()) || ($arrPerm[4]==2 && $ownerGroupID==getLoggedGroupID()) || $arrPerm[4]==3){ // allow delete?
75         
// delete allowed, so continue ...
76     }
else{
77         
return $Translation['You don\'t have enough permissions to delete this record'];
78     }
79
80     
// hook: departments_before_delete
81     
if(function_exists('departments_before_delete')){
82         $args=array();
83         
if(!departments_before_delete($selected_id, $skipChecks, getMemberInfo(), $args))
84             
return $Translation['Couldn\'t delete this record'];
85     }
86
87     
// child table: class_time_table
88     $res = sql(
"select `id` from `departments` where `id`='$selected_id'", $eo);
89     $id = db_fetch_row($res);
90     $rires = sql(
"select count(1) from `class_time_table` where `department`='".addslashes($id[0])."'", $eo);
91     $rirow = db_fetch_row($rires);
92     
if($rirow[0] && !$AllowDeleteOfParents && !$skipChecks){
93         $RetMsg = $Translation[
"couldn't delete"];
94         $RetMsg = str_replace(
"<RelatedRecords>", $rirow[0], $RetMsg);
95         $RetMsg = str_replace(
"<TableName>", "class_time_table", $RetMsg);
96         
return $RetMsg;
97     }elseif($rirow[
0] && $AllowDeleteOfParents && !$skipChecks){
98         $RetMsg = $Translation[
"confirm delete"];
99         $RetMsg = str_replace(
"<RelatedRecords>", $rirow[0], $RetMsg);
100         $RetMsg = str_replace(
"<TableName>", "class_time_table", $RetMsg);
101         $RetMsg = str_replace(
"<Delete>", "<input type=\"button\" class=\"button\" value=\"".$Translation['yes']."\" onClick=\"window.location='departments_view.php?SelectedID=".urlencode($selected_id)."&delete_x=1&confirmed=1';\">", $RetMsg);
102         $RetMsg = str_replace(
"<Cancel>", "<input type=\"button\" class=\"button\" value=\"".$Translation['no']."\" onClick=\"window.location='departments_view.php?SelectedID=".urlencode($selected_id)."';\">", $RetMsg);
103         
return $RetMsg;
104     }
105
106     
// child table: exam_time_table
107     $res = sql(
"select `id` from `departments` where `id`='$selected_id'", $eo);
108     $id = db_fetch_row($res);
109     $rires = sql(
"select count(1) from `exam_time_table` where `department`='".addslashes($id[0])."'", $eo);
110     $rirow = db_fetch_row($rires);
111     
if($rirow[0] && !$AllowDeleteOfParents && !$skipChecks){
112         $RetMsg = $Translation[
"couldn't delete"];
113         $RetMsg = str_replace(
"<RelatedRecords>", $rirow[0], $RetMsg);
114         $RetMsg = str_replace(
"<TableName>", "exam_time_table", $RetMsg);
115         
return $RetMsg;
116     }elseif($rirow[
0] && $AllowDeleteOfParents && !$skipChecks){
117         $RetMsg = $Translation[
"confirm delete"];
118         $RetMsg = str_replace(
"<RelatedRecords>", $rirow[0], $RetMsg);
119         $RetMsg = str_replace(
"<TableName>", "exam_time_table", $RetMsg);
120         $RetMsg = str_replace(
"<Delete>", "<input type=\"button\" class=\"button\" value=\"".$Translation['yes']."\" onClick=\"window.location='departments_view.php?SelectedID=".urlencode($selected_id)."&delete_x=1&confirmed=1';\">", $RetMsg);
121         $RetMsg = str_replace(
"<Cancel>", "<input type=\"button\" class=\"button\" value=\"".$Translation['no']."\" onClick=\"window.location='departments_view.php?SelectedID=".urlencode($selected_id)."';\">", $RetMsg);
122         
return $RetMsg;
123     }
124
125     
// child table: student_details
126     $res = sql(
"select `id` from `departments` where `id`='$selected_id'", $eo);
127     $id = db_fetch_row($res);
128     $rires = sql(
"select count(1) from `student_details` where `department`='".addslashes($id[0])."'", $eo);
129     $rirow = db_fetch_row($rires);
130     
if($rirow[0] && !$AllowDeleteOfParents && !$skipChecks){
131         $RetMsg = $Translation[
"couldn't delete"];
132         $RetMsg = str_replace(
"<RelatedRecords>", $rirow[0], $RetMsg);
133         $RetMsg = str_replace(
"<TableName>", "student_details", $RetMsg);
134         
return $RetMsg;
135     }elseif($rirow[
0] && $AllowDeleteOfParents && !$skipChecks){
136         $RetMsg = $Translation[
"confirm delete"];
137         $RetMsg = str_replace(
"<RelatedRecords>", $rirow[0], $RetMsg);
138         $RetMsg = str_replace(
"<TableName>", "student_details", $RetMsg);
139         $RetMsg = str_replace(
"<Delete>", "<input type=\"button\" class=\"button\" value=\"".$Translation['yes']."\" onClick=\"window.location='departments_view.php?SelectedID=".urlencode($selected_id)."&delete_x=1&confirmed=1';\">", $RetMsg);
140         $RetMsg = str_replace(
"<Cancel>", "<input type=\"button\" class=\"button\" value=\"".$Translation['no']."\" onClick=\"window.location='departments_view.php?SelectedID=".urlencode($selected_id)."';\">", $RetMsg);
141         
return $RetMsg;
142     }
143
144     
// child table: notices
145     $res = sql(
"select `id` from `departments` where `id`='$selected_id'", $eo);
146     $id = db_fetch_row($res);
147     $rires = sql(
"select count(1) from `notices` where `department`='".addslashes($id[0])."'", $eo);
148     $rirow = db_fetch_row($rires);
149     
if($rirow[0] && !$AllowDeleteOfParents && !$skipChecks){
150         $RetMsg = $Translation[
"couldn't delete"];
151         $RetMsg = str_replace(
"<RelatedRecords>", $rirow[0], $RetMsg);
152         $RetMsg = str_replace(
"<TableName>", "notices", $RetMsg);
153         
return $RetMsg;
154     }elseif($rirow[
0] && $AllowDeleteOfParents && !$skipChecks){
155         $RetMsg = $Translation[
"confirm delete"];
156         $RetMsg = str_replace(
"<RelatedRecords>", $rirow[0], $RetMsg);
157         $RetMsg = str_replace(
"<TableName>", "notices", $RetMsg);
158         $RetMsg = str_replace(
"<Delete>", "<input type=\"button\" class=\"button\" value=\"".$Translation['yes']."\" onClick=\"window.location='departments_view.php?SelectedID=".urlencode($selected_id)."&delete_x=1&confirmed=1';\">", $RetMsg);
159         $RetMsg = str_replace(
"<Cancel>", "<input type=\"button\" class=\"button\" value=\"".$Translation['no']."\" onClick=\"window.location='departments_view.php?SelectedID=".urlencode($selected_id)."';\">", $RetMsg);
160         
return $RetMsg;
161     }
162
163     sql(
"delete from `departments` where `id`='$selected_id'", $eo);
164
165     
// hook: departments_after_delete
166     
if(function_exists('departments_after_delete')){
167         $args=array();
168         departments_after_delete($selected_id, getMemberInfo(), $args);
169     }
170
171     
// mm: delete ownership data
172     sql(
"delete from membership_userrecords where tableName='departments' and pkValue='$selected_id'", $eo);
173 }
174
175 function departments_update($selected_id){
176     
global $Translation;
177
178     
// mm: can member edit record?
179     $arrPerm=getTablePermissions(
'departments');
180     $ownerGroupID=sqlValue(
"select groupID from membership_userrecords where tableName='departments' and pkValue='".makeSafe($selected_id)."'");
181     $ownerMemberID=sqlValue(
"select lcase(memberID) from membership_userrecords where tableName='departments' and pkValue='".makeSafe($selected_id)."'");
182     
if(($arrPerm[3]==1 && $ownerMemberID==getLoggedMemberID()) || ($arrPerm[3]==2 && $ownerGroupID==getLoggedGroupID()) || $arrPerm[3]==3){ // allow update?
183         
// update allowed, so continue ...
184     }
else{
185         
return false;
186     }
187
188     $data[
'name'] = makeSafe($_REQUEST['name']);
189         
if($data['name'] == empty_lookup_value){ $data['name'] = ''; }
190     
if($data['name']==''){
191         echo StyleSheet() .
"\n\n<div class=\"alert alert-danger\">{$Translation['error:']} 'Name': {$Translation['field not null']}<br><br>";
192         echo
'<a href="" onclick="history.go(-1); return false;">'.$Translation['< back'].'</a></div>';
193         exit;
194     }
195     $data[
'school'] = makeSafe($_REQUEST['school']);
196         
if($data['school'] == empty_lookup_value){ $data['school'] = ''; }
197     
if($data['school']==''){
198         echo StyleSheet() .
"\n\n<div class=\"alert alert-danger\">{$Translation['error:']} 'School': {$Translation['field not null']}<br><br>";
199         echo
'<a href="" onclick="history.go(-1); return false;">'.$Translation['< back'].'</a></div>';
200         exit;
201     }
202     $data[
'selectedID']=makeSafe($selected_id);
203
204     
// hook: departments_before_update
205     
if(function_exists('departments_before_update')){
206         $args=array();
207         
if(!departments_before_update($data, getMemberInfo(), $args)){ return false; }
208     }
209
210     $o=array(
'silentErrors' => true);
211     sql(
'update `departments` set `name`=' . (($data['name'] !== '' && $data['name'] !== NULL) ? "'{$data['name']}'" : 'NULL') . ', `school`=' . (($data['school'] !== '' && $data['school'] !== NULL) ? "'{$data['school']}'" : 'NULL') . " where `id`='".makeSafe($selected_id)."'", $o);
212     
if($o['error']!=''){
213         echo $o[
'error'];
214         echo
'<a href="departments_view.php?SelectedID='.urlencode($selected_id)."\">{$Translation['< back']}</a>";
215         exit;
216     }
217
218
219     
// hook: departments_after_update
220     
if(function_exists('departments_after_update')){
221         $res = sql(
"SELECT * FROM `departments` WHERE `id`='{$data['selectedID']}' LIMIT 1", $eo);
222         
if($row = db_fetch_assoc($res)){
223             $data = array_map(
'makeSafe', $row);
224         }
225         $data[
'selectedID'] = $data['id'];
226         $args = array();
227         
if(!departments_after_update($data, getMemberInfo(), $args)){ return; }
228     }
229
230     
// mm: update ownership data
231     sql(
"update membership_userrecords set dateUpdated='".time()."' where tableName='departments' and pkValue='".makeSafe($selected_id)."'", $eo);
232
233 }
234
235 function departments_form($selected_id =
'', $AllowUpdate = 1, $AllowInsert = 1, $AllowDelete = 1, $ShowCancel = 0, $TemplateDV = '', $TemplateDVP = ''){
236     
// function to return an editable form for a table records
237     
// and fill it with data of record whose ID is $selected_id. If $selected_id
238     
// is empty, an empty form is shown, with only an 'Add New'
239     
// button displayed.
240
241     
global $Translation;
242
243     
// mm: get table permissions
244     $arrPerm=getTablePermissions(
'departments');
245     
if(!$arrPerm[1] && $selected_id==''){ return ''; }
246     $AllowInsert = ($arrPerm[
1] ? true : false);
247     
// print preview?
248     $dvprint =
false;
249     
if($selected_id && $_REQUEST['dvprint_x'] != ''){
250         $dvprint =
true;
251     }
252
253     $filterer_school = thisOr(undo_magic_quotes($_REQUEST[
'filterer_school']), '');
254
255     
// populate filterers, starting from children to grand-parents
256
257     
// unique random identifier
258     $rnd1 = ($dvprint ? rand(
1000000, 9999999) : '');
259     
// combobox: school
260     $combo_school =
new DataCombo;
261
262     
if($selected_id){
263         
// mm: check member permissions
264         
if(!$arrPerm[2]){
265             
return "";
266         }
267         
// mm: who is the owner?
268         $ownerGroupID=sqlValue(
"select groupID from membership_userrecords where tableName='departments' and pkValue='".makeSafe($selected_id)."'");
269         $ownerMemberID=sqlValue(
"select lcase(memberID) from membership_userrecords where tableName='departments' and pkValue='".makeSafe($selected_id)."'");
270         
if($arrPerm[2]==1 && getLoggedMemberID()!=$ownerMemberID){
271             
return "";
272         }
273         
if($arrPerm[2]==2 && getLoggedGroupID()!=$ownerGroupID){
274             
return "";
275         }
276
277         
// can edit?
278         
if(($arrPerm[3]==1 && $ownerMemberID==getLoggedMemberID()) || ($arrPerm[3]==2 && $ownerGroupID==getLoggedGroupID()) || $arrPerm[3]==3){
279             $AllowUpdate=
1;
280         }
else{
281             $AllowUpdate=
0;
282         }
283
284         $res = sql(
"select * from `departments` where `id`='".makeSafe($selected_id)."'", $eo);
285         
if(!($row = db_fetch_array($res))){
286             
return error_message($Translation['No records found'], 'departments_view.php', false);
287         }
288         $urow = $row;
/* unsanitized data */
289         $hc =
new CI_Input();
290         $row = $hc->xss_clean($row);
/* sanitize data */
291         $combo_school->SelectedData = $row[
'school'];
292     }
else{
293         $combo_school->SelectedData = $filterer_school;
294     }
295     $combo_school->HTML =
'<span id="school-container' . $rnd1 . '"></span><input type="hidden" name="school" id="school' . $rnd1 . '" value="' . html_attr($combo_school->SelectedData) . '">';
296     $combo_school->MatchText =
'<span id="school-container-readonly' . $rnd1 . '"></span><input type="hidden" name="school" id="school' . $rnd1 . '" value="' . html_attr($combo_school->SelectedData) . '">';
297
298     ob_start();
299     ?>
300
301     <script>
302         
// initial lookup values
303         AppGini.current_school__RAND__ = { text:
"", value: "<?php echo addslashes($selected_id ? $urow['school'] : $filterer_school); ?>"};
304
305         jQuery(function() {
306             setTimeout(function(){
307                 
if(typeof(school_reload__RAND__) == 'function') school_reload__RAND__();
308             },
10); /* we need to slightly delay client-side execution of the above code to allow AppGini.ajaxCache to work */
309         });
310         function school_reload__RAND__(){
311         <?php
if(($AllowUpdate || $AllowInsert) && !$dvprint){ ?>
312
313             $j(
"#school-container__RAND__").select2({
314                 
/* initial default value */
315                 initSelection: function(e, c){
316                     $j.ajax({
317                         url:
'ajax_combo.php',
318                         dataType:
'json',
319                         data: { id: AppGini.current_school__RAND__.
value, t: 'departments', f: 'school' },
320                         success: function(resp){
321                             c({
322                                 id: resp.results[
0].id,
323                                 text: resp.results[
0].text
324                             });
325                             $j(
'[name="school"]').val(resp.results[0].id);
326                             $j(
'[id=school-container-readonly__RAND__]').html('<span id="school-match-text">' + resp.results[0].text + '</span>');
327                             
if(resp.results[0].id == '<?php echo empty_lookup_value; ?>'){ $j('.btn[id=schools_view_parent]').hide(); }else{ $j('.btn[id=schools_view_parent]').show(); }
328
329
330                             
if(typeof(school_update_autofills__RAND__) == 'function') school_update_autofills__RAND__();
331                         }
332                     });
333                 },
334                 width:
'100%',
335                 formatNoMatches: function(term){
/* */ return '<?php echo addslashes($Translation['No matches found!']); ?>'; },
336                 minimumResultsForSearch:
10,
337                 loadMorePadding:
200,
338                 ajax: {
339                     url:
'ajax_combo.php',
340                     dataType:
'json',
341                     cache:
true,
342                     data: function(term, page){
/* */ return { s: term, p: page, t: 'departments', f: 'school' }; },
343                     results: function(resp, page){
/* */ return resp; }
344                 },
345                 escapeMarkup: function(str){
/* */ return str; }
346             }).
on('change', function(e){
347                 AppGini.current_school__RAND__.
value = e.added.id;
348                 AppGini.current_school__RAND__.text = e.added.text;
349                 $j(
'[name="school"]').val(e.added.id);
350                 
if(e.added.id == '<?php echo empty_lookup_value; ?>'){ $j('.btn[id=schools_view_parent]').hide(); }else{ $j('.btn[id=schools_view_parent]').show(); }
351
352
353                 
if(typeof(school_update_autofills__RAND__) == 'function') school_update_autofills__RAND__();
354             });
355
356             
if(!$j("#school-container__RAND__").length){
357                 $j.ajax({
358                     url:
'ajax_combo.php',
359                     dataType:
'json',
360                     data: { id: AppGini.current_school__RAND__.
value, t: 'departments', f: 'school' },
361                     success: function(resp){
362                         $j(
'[name="school"]').val(resp.results[0].id);
363                         $j(
'[id=school-container-readonly__RAND__]').html('<span id="school-match-text">' + resp.results[0].text + '</span>');
364                         
if(resp.results[0].id == '<?php echo empty_lookup_value; ?>'){ $j('.btn[id=schools_view_parent]').hide(); }else{ $j('.btn[id=schools_view_parent]').show(); }
365
366                         
if(typeof(school_update_autofills__RAND__) == 'function') school_update_autofills__RAND__();
367                     }
368                 });
369             }
370
371         <?php }
else{ ?>
372
373             $j.ajax({
374                 url:
'ajax_combo.php',
375                 dataType:
'json',
376                 data: { id: AppGini.current_school__RAND__.
value, t: 'departments', f: 'school' },
377                 success: function(resp){
378                     $j(
'[id=school-container__RAND__], [id=school-container-readonly__RAND__]').html('<span id="school-match-text">' + resp.results[0].text + '</span>');
379                     
if(resp.results[0].id == '<?php echo empty_lookup_value; ?>'){ $j('.btn[id=schools_view_parent]').hide(); }else{ $j('.btn[id=schools_view_parent]').show(); }
380
381                     
if(typeof(school_update_autofills__RAND__) == 'function') school_update_autofills__RAND__();
382                 }
383             });
384         <?php } ?>
385
386         }
387     </script>
388     <?php
389
390     $lookups = str_replace(
'__RAND__', $rnd1, ob_get_contents());
391     ob_end_clean();
392
393
394     
// code for template based detail view forms
395
396     
// open the detail view template
397     
if($dvprint){
398         $template_file = is_file(
"./{$TemplateDVP}") ? "./{$TemplateDVP}" : './templates/departments_templateDVP.html';
399         $templateCode = @file_get_contents($template_file);
400     }
else{
401         $template_file = is_file(
"./{$TemplateDV}") ? "./{$TemplateDV}" : './templates/departments_templateDV.html';
402         $templateCode = @file_get_contents($template_file);
403     }
404
405     
// process form title
406     $templateCode = str_replace(
'<%%DETAIL_VIEW_TITLE%%>', 'Thông tin môn học', $templateCode);
407     $templateCode = str_replace(
'<%%RND1%%>', $rnd1, $templateCode);
408     $templateCode = str_replace(
'<%%EMBEDDED%%>', ($_REQUEST['Embedded'] ? 'Embedded=1' : ''), $templateCode);
409     
// process buttons
410     
if($AllowInsert){
411         
if(!$selected_id) $templateCode = str_replace('<%%INSERT_BUTTON%%>', '<button type="submit" class="btn btn-success" id="insert" name="insert_x" value="1" onclick="return departments_validateData();"><i class="glyphicon glyphicon-plus-sign"></i> ' . $Translation['Save New'] . '</button>', $templateCode);
412         $templateCode = str_replace(
'<%%INSERT_BUTTON%%>', '<button type="submit" class="btn btn-default" id="insert" name="insert_x" value="1" onclick="return departments_validateData();"><i class="glyphicon glyphicon-plus-sign"></i> ' . $Translation['Save As Copy'] . '</button>', $templateCode);
413     }
else{
414         $templateCode = str_replace(
'<%%INSERT_BUTTON%%>', '', $templateCode);
415     }
416
417     
// 'Back' button action
418     
if($_REQUEST['Embedded']){
419         $backAction =
'AppGini.closeParentModal(); return false;';
420     }
else{
421         $backAction =
'$j(\'form\').eq(0).attr(\'novalidate\', \'novalidate\'); document.myform.reset(); return true;';
422     }
423
424     
if($selected_id){
425         
if(!$_REQUEST['Embedded']) $templateCode = str_replace('<%%DVPRINT_BUTTON%%>', '<button type="submit" class="btn btn-default" id="dvprint" name="dvprint_x" value="1" onclick="$$(\'form\')[0].writeAttribute(\'novalidate\', \'novalidate\'); document.myform.reset(); return true;" title="' . html_attr($Translation['Print Preview']) . '"><i class="glyphicon glyphicon-print"></i> ' . $Translation['Print Preview'] . '</button>', $templateCode);
426         
if($AllowUpdate){
427             $templateCode = str_replace(
'<%%UPDATE_BUTTON%%>', '<button type="submit" class="btn btn-success btn-lg" id="update" name="update_x" value="1" onclick="return departments_validateData();" title="' . html_attr($Translation['Save Changes']) . '"><i class="glyphicon glyphicon-ok"></i> ' . $Translation['Save Changes'] . '</button>', $templateCode);
428         }
else{
429             $templateCode = str_replace(
'<%%UPDATE_BUTTON%%>', '', $templateCode);
430         }
431         
if(($arrPerm[4]==1 && $ownerMemberID==getLoggedMemberID()) || ($arrPerm[4]==2 && $ownerGroupID==getLoggedGroupID()) || $arrPerm[4]==3){ // allow delete?
432             $templateCode = str_replace(
'<%%DELETE_BUTTON%%>', '<button type="submit" class="btn btn-danger" id="delete" name="delete_x" value="1" onclick="return confirm(\'' . $Translation['are you sure?'] . '\');" title="' . html_attr($Translation['Delete']) . '"><i class="glyphicon glyphicon-trash"></i> ' . $Translation['Delete'] . '</button>', $templateCode);
433         }
else{
434             $templateCode = str_replace(
'<%%DELETE_BUTTON%%>', '', $templateCode);
435         }
436         $templateCode = str_replace(
'<%%DESELECT_BUTTON%%>', '<button type="submit" class="btn btn-default" id="deselect" name="deselect_x" value="1" onclick="' . $backAction . '" title="' . html_attr($Translation['Back']) . '"><i class="glyphicon glyphicon-chevron-left"></i> ' . $Translation['Back'] . '</button>', $templateCode);
437     }
else{
438         $templateCode = str_replace(
'<%%UPDATE_BUTTON%%>', '', $templateCode);
439         $templateCode = str_replace(
'<%%DELETE_BUTTON%%>', '', $templateCode);
440         $templateCode = str_replace(
'<%%DESELECT_BUTTON%%>', ($ShowCancel ? '<button type="submit" class="btn btn-default" id="deselect" name="deselect_x" value="1" onclick="' . $backAction . '" title="' . html_attr($Translation['Back']) . '"><i class="glyphicon glyphicon-chevron-left"></i> ' . $Translation['Back'] . '</button>' : ''), $templateCode);
441     }
442
443     
// set records to read only if user can't insert new records and can't edit current record
444     
if(($selected_id && !$AllowUpdate && !$AllowInsert) || (!$selected_id && !$AllowInsert)){
445         $jsReadOnly .=
"\tjQuery('#name').replaceWith('<div class=\"form-control-static\" id=\"name\">' + (jQuery('#name').val() || '') + '</div>');\n";
446         $jsReadOnly .=
"\tjQuery('#school').prop('disabled', true).css({ color: '#555', backgroundColor: '#fff' });\n";
447         $jsReadOnly .=
"\tjQuery('#school_caption').prop('disabled', true).css({ color: '#555', backgroundColor: 'white' });\n";
448         $jsReadOnly .=
"\tjQuery('.select2-container').hide();\n";
449
450         $noUploads =
true;
451     }elseif($AllowInsert){
452         $jsEditable .=
"\tjQuery('form').eq(0).data('already_changed', true);"; // temporarily disable form change handler
453             $jsEditable .=
"\tjQuery('form').eq(0).data('already_changed', false);"; // re-enable form change handler
454     }
455
456     
// process combos
457     $templateCode = str_replace(
'<%%COMBO(school)%%>', $combo_school->HTML, $templateCode);
458     $templateCode = str_replace(
'<%%COMBOTEXT(school)%%>', $combo_school->MatchText, $templateCode);
459     $templateCode = str_replace(
'<%%URLCOMBOTEXT(school)%%>', urlencode($combo_school->MatchText), $templateCode);
460
461     
/* lookup fields array: 'lookup field name' => array('parent table name', 'lookup field caption') */
462     $lookup_fields = array(
'school' => array('schools', 'School'));
463     
foreach($lookup_fields as $luf => $ptfc){
464         $pt_perm = getTablePermissions($ptfc[
0]);
465
466         
// process foreign key links
467         
if($pt_perm['view'] || $pt_perm['edit']){
468             $templateCode = str_replace(
"<%%PLINK({$luf})%%>", '<button type="button" class="btn btn-default view_parent hspacer-md" id="' . $ptfc[0] . '_view_parent" title="' . html_attr($Translation['View'] . ' ' . $ptfc[1]) . '"><i class="glyphicon glyphicon-eye-open"></i></button>', $templateCode);
469         }
470
471         
// if user has insert permission to parent table of a lookup field, put an add new button
472         
if($pt_perm['insert'] && !$_REQUEST['Embedded']){
473             $templateCode = str_replace(
"<%%ADDNEW({$ptfc[0]})%%>", '<button type="button" class="btn btn-success add_new_parent hspacer-md" id="' . $ptfc[0] . '_add_new" title="' . html_attr($Translation['Add New'] . ' ' . $ptfc[1]) . '"><i class="glyphicon glyphicon-plus-sign"></i></button>', $templateCode);
474         }
475     }
476
477     
// process images
478     $templateCode = str_replace(
'<%%UPLOADFILE(id)%%>', '', $templateCode);
479     $templateCode = str_replace(
'<%%UPLOADFILE(name)%%>', '', $templateCode);
480     $templateCode = str_replace(
'<%%UPLOADFILE(school)%%>', '', $templateCode);
481
482     
// process values
483     
if($selected_id){
484         
if( $dvprint) $templateCode = str_replace('<%%VALUE(id)%%>', safe_html($urow['id']), $templateCode);
485         
if(!$dvprint) $templateCode = str_replace('<%%VALUE(id)%%>', html_attr($row['id']), $templateCode);
486         $templateCode = str_replace(
'<%%URLVALUE(id)%%>', urlencode($urow['id']), $templateCode);
487         
if( $dvprint) $templateCode = str_replace('<%%VALUE(name)%%>', safe_html($urow['name']), $templateCode);
488         
if(!$dvprint) $templateCode = str_replace('<%%VALUE(name)%%>', html_attr($row['name']), $templateCode);
489         $templateCode = str_replace(
'<%%URLVALUE(name)%%>', urlencode($urow['name']), $templateCode);
490         
if( $dvprint) $templateCode = str_replace('<%%VALUE(school)%%>', safe_html($urow['school']), $templateCode);
491         
if(!$dvprint) $templateCode = str_replace('<%%VALUE(school)%%>', html_attr($row['school']), $templateCode);
492         $templateCode = str_replace(
'<%%URLVALUE(school)%%>', urlencode($urow['school']), $templateCode);
493     }
else{
494         $templateCode = str_replace(
'<%%VALUE(id)%%>', '', $templateCode);
495         $templateCode = str_replace(
'<%%URLVALUE(id)%%>', urlencode(''), $templateCode);
496         $templateCode = str_replace(
'<%%VALUE(name)%%>', '', $templateCode);
497         $templateCode = str_replace(
'<%%URLVALUE(name)%%>', urlencode(''), $templateCode);
498         $templateCode = str_replace(
'<%%VALUE(school)%%>', '', $templateCode);
499         $templateCode = str_replace(
'<%%URLVALUE(school)%%>', urlencode(''), $templateCode);
500     }
501
502     
// process translations
503     
foreach($Translation as $symbol=>$trans){
504         $templateCode = str_replace(
"<%%TRANSLATION($symbol)%%>", $trans, $templateCode);
505     }
506
507     
// clear scrap
508     $templateCode = str_replace(
'<%%', '<!-- ', $templateCode);
509     $templateCode = str_replace(
'%%>', ' -->', $templateCode);
510
511     
// hide links to inaccessible tables
512     
if($_REQUEST['dvprint_x'] == ''){
513         $templateCode .=
"\n\n<script>\$j(function(){\n";
514         $arrTables = getTableList();
515         
foreach($arrTables as $name => $caption){
516             $templateCode .=
"\t\$j('#{$name}_link').removeClass('hidden');\n";
517             $templateCode .=
"\t\$j('#xs_{$name}_link').removeClass('hidden');\n";
518         }
519
520         $templateCode .= $jsReadOnly;
521         $templateCode .= $jsEditable;
522
523         
if(!$selected_id){
524         }
525
526         $templateCode.=
"\n});</script>\n";
527     }
528
529     
// ajaxed auto-fill fields
530     $templateCode .=
'<script>';
531     $templateCode .=
'$j(function() {';
532
533
534     $templateCode.=
"});";
535     $templateCode.=
"</script>";
536     $templateCode .= $lookups;
537
538     
// handle enforced parent values for read-only lookup fields
539
540     
// don't include blank images in lightbox gallery
541     $templateCode = preg_replace(
'/blank.gif" data-lightbox=".*?"/', 'blank.gif"', $templateCode);
542
543     
// don't display empty email links
544     $templateCode=preg_replace(
'/<a .*?href="mailto:".*?<\/a>/', '', $templateCode);
545
546     
/* default field values */
547     $rdata = $jdata = get_defaults(
'departments');
548     
if($selected_id){
549         $jdata = get_joined_record(
'departments', $selected_id);
550         
if($jdata === false) $jdata = get_defaults('departments');
551         $rdata = $row;
552     }
553     $templateCode .= loadView(
'departments-ajax-cache', array('rdata' => $rdata, 'jdata' => $jdata));
554
555     
// hook: departments_dv
556     
if(function_exists('departments_dv')){
557         $args=array();
558         departments_dv(($selected_id ? $selected_id : FALSE), getMemberInfo(), $templateCode, $args);
559     }
560
561     
return $templateCode;
562 }
563 ?>



Hệ thống xếp lịch học tín chỉ cho sinh viên CNTT trên PHP & MySQL 111.133 lượt xem

Gõ tìm kiếm nhanh...